package 中等.贪心思想;

import java.util.Arrays;

/**
 * 给你一个长度为 n 的整数数组 nums，以及一个正整数 k 。
 * 将这个数组划分为 n / 3 个长度为 3 的子数组，并满足以下条件：
 * 子数组中 任意 两个元素的差必须 小于或等于 k 。
 * 返回一个 二维数组 ，包含所有的子数组。如果不可能满足条件，就返回一个空数组。如果有多个答案，返回 任意一个 即可。
 *
 * @ https://leetcode.cn/problems/divide-array-into-arrays-with-max-difference/description/?envType=daily-question&envId=2025-06-18
 * @date 2025/06/18
 */
public class 划分数组并满足最大差限制_2966 {

    public static void main(String[] args) {

    }

    /**
     * 贪心+排序
     */
    public int[][] divideArray(int[] nums, int k) {

        int[][] ans = new int[nums.length / 3][3];
        Arrays.sort(nums);
        for (int i = 0; i < nums.length; i += 3) {
            if (nums[i + 2] - nums[i] > k) {
                return new int[][]{};
            }
            ans[i / 3] = new int[]{nums[i], nums[i + 1], nums[i + 2]};
        }

        return ans;
    }

}
